/**
 * 格式化日期
 * @param {Date|string|number} date 日期对象、时间戳或日期字符串
 * @param {string} format 格式化模式，如 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date, format = "YYYY-MM-DD") {
  // 将输入转换为日期对象
  const dateObj = date instanceof Date ? date : new Date(date);

  // 如果日期无效，返回空字符串
  if (isNaN(dateObj.getTime())) {
    console.warn("Invalid date:", date);
    return "";
  }

  const year = dateObj.getFullYear();
  const month = dateObj.getMonth() + 1;
  const day = dateObj.getDate();
  const hours = dateObj.getHours();
  const minutes = dateObj.getMinutes();
  const seconds = dateObj.getSeconds();

  // 添加前导零的辅助函数
  const pad = (num) => (num < 10 ? "0" + num : num);

  // 替换格式中的占位符
  return format
    .replace(/YYYY/g, year)
    .replace(/MM/g, pad(month))
    .replace(/DD/g, pad(day))
    .replace(/HH/g, pad(hours))
    .replace(/mm/g, pad(minutes))
    .replace(/ss/g, pad(seconds));
}

/**
 * 格式化时间范围
 * @param {Array} range 时间范围数组 [startDate, endDate]
 * @param {string} format 日期格式化模式
 * @param {string} separator 分隔符
 * @returns {string} 格式化后的时间范围
 */
export function formatDateRange(
  range,
  format = "YYYY-MM-DD",
  separator = " 至 "
) {
  if (!range || !Array.isArray(range) || range.length !== 2) {
    return "";
  }

  const [start, end] = range;
  return `${formatDate(start, format)}${separator}${formatDate(end, format)}`;
}
